package veterinaria.manager;

import geral.manager.GenericManager;
import geral.manager.UtilManager;
import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import br.com.sgc.entities.veterinaria.Pelagem;
import br.com.sgc.session.GenericSession;

@Named
@ConversationScoped
public class PelagemManager extends GenericManager implements Serializable{
	
	private static final long serialVersionUID = -439692882151383136L;

	@Inject private UtilManager utilManager;
	
	@EJB private GenericSession<Pelagem> pelagemSession;
	
	private Pelagem pelagem = new Pelagem();
	
	private List<Pelagem> pelagens = new ArrayList<Pelagem>();
	
	private Boolean showPanelCadastro;

	
	public String list(){
		pelagens = pelagemSession.findAll(Pelagem.class ,utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId());
		showPanelCadastro = false;
		return "formPelagem";
	}
	
	public String prepareSave(){
		showPanelCadastro = true;
		pelagem = new Pelagem();
		return "formPelagem";
	}
	
	public String save(){
		try {
			pelagem.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			pelagemSession.save(pelagem);
			FacesUtil.mensInfo("Pelagem salva com sucesso");
			pelagem = new Pelagem();
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}
	
	public String prepareUpdate(){
		pelagem = pelagemSession.findById(Pelagem.class, pelagem.getId(), true);
		showPanelCadastro = true;
		return "formPelagem";
	}
	
	public String update(){
		try {
			pelagem.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			pelagemSession.update(pelagem);
			pelagem = new Pelagem();
			FacesUtil.mensInfo("Pelagem atualizado com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public GenericSession<Pelagem> getPelagemSession() {
		return pelagemSession;
	}

	public void setPelagemSession(GenericSession<Pelagem> pelagemSession) {
		this.pelagemSession = pelagemSession;
	}

	public Pelagem getPelagem() {
		return pelagem;
	}

	public void setPelagem(Pelagem pelagem) {
		this.pelagem = pelagem;
	}

	public List<Pelagem> getPelagens() {
		return pelagens;
	}

	public void setPelagens(List<Pelagem> pelagens) {
		this.pelagens = pelagens;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}

	}
